In computer technology, a subroutine (also known as a procedure, function, routine, method, etc.) is a set of instructions within a larger program that performs a specific task and is relatively independent of the remaining program code. A subroutine operates as a computer sub-program that is one step in a larger program. A subroutine is often implemented so that it can be started (“called”) several times and/or from several places during execution of the program, including from other subroutines, and then branch back (return) to the next instruction of the calling program after execution of the subroutine is complete.
When a subroutine is executed more than once by a computer or processor, the instructions of the subroutine may be read multiple times from instruction memory. Repeated access of memory to fetch subroutine instructions increases energy consumption. Additionally, execution of the subroutine call and return instructions may cause the processor pipeline to stall while fetching the call/return destination instructions from the instruction memory. Stall cycles reduce processor performance. Thus, while incorporation of subroutines effectively can reduce program size and improve program organization, subroutine execution can detrimentally affect processor performance.